home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 February / PCWorld_2006-02_cd.bin / software / vyzkuste / triky / triky.exe / httrack-3.33.exe / {app} / src / webhttrack < prev    next >
Text File  |  2004-11-13  |  5KB  |  173 lines

  1. #!/bin/bash
  2. #
  3. # WebHTTrack launcher script
  4. # Initializes the htsserver GUI frontend and launch the default browser
  5.  
  6. BROWSEREXE=
  7. SRCHBROWSEREXE="x-www-browser www-browser mozilla firefox firebird galeon konqueror opera netscape"
  8. if test -n "${BROWSER}"; then
  9. # sensible-browser will f up if BROWSER is not set
  10. SRCHBROWSEREXE="sensible-browser ${SRCHBROWSEREXE}"
  11. fi
  12. SRCHPATH="/usr/local/bin /usr/share/bin /usr/bin /usr/lib/httrack /usr/local/lib/httrack /usr/local/share/httrack /sw/bin ${HOME}/usr/bin ${HOME}/bin"
  13. SRCHPATH="$SRCHPATH "`echo $PATH | tr ":" " "`
  14. SRCHDISTPATH="/usr/share /usr/local /usr /local /usr/local/share ${HOME}/usr ${HOME}/usr/share /sw ${HOME}/usr/local ${HOME}/usr/share"
  15.  
  16. ###
  17. # And now some famous cuisine
  18.  
  19. function log {
  20. echo "$0($$): $@" >&2
  21. return 0
  22. }
  23.  
  24. function mozillabrowser {
  25. # returns 0, if the browser is mozilla type
  26. echo "$1" | grep -q "mozilla"
  27. [ $? -eq 0 ] && return 0 
  28. echo "$1" | grep -q "netscape"
  29. [ $? -eq 0 ] && return 0 
  30. echo "$1" | grep -q "firebird"
  31. [ $? -eq 0 ] && return 0 
  32. echo "$1" | grep -q "firefox"
  33. [ $? -eq 0 ] && return 0 
  34. return 1;
  35. }
  36. function mozillaloaded  {
  37. user_name=`logname 2>/dev/null`
  38. if ! test -n "${user_name}"; then
  39. user_name=`id -un`
  40. fi
  41. if test -n "${user_name}"; then
  42. ps -e --user "$user_name" | grep -qE "(mozilla|netscape|firebird|firefox)"
  43. else
  44. false
  45. fi
  46. }
  47.  
  48. function launch_browser {
  49. log "launching $1"
  50. start_t=`date +%s`
  51. browser=$1
  52. url=$2
  53. moz=
  54. if mozillaloaded; then
  55. moz=1
  56. fi
  57. # launch any browser
  58. # if it is a mozilla like browser, check if the browser is running and use 
  59. # -remote if needed. Change the URL into openURL($url) too. 
  60. # (thanks to Torsten Werner for the patch)
  61. # see http://www.mozilla.org/unix/remote.html
  62. if mozillabrowser ${browser}; then
  63.     if ! ${browser} -remote "${url}"; then
  64.         log "spawning browser.."
  65.         ${browser} "${url}"
  66.     fi
  67. else
  68.     log "spawning regular browser.."
  69.     ${browser} "${url}"
  70. fi
  71. # this is a real pain in the neck: browser can hiddenly use the -remote feature of
  72. # mozilla and therefore return immediately
  73. # this loop is the only reliable solution AFAIK
  74. end_t=`date +%s`
  75. if test -n "$start_t" -a -n "$end_t"; then
  76.     int_t=$[$end_t-$start_t]
  77. else
  78.     int_t=0
  79. fi
  80. if test -n "${int_t}" -a "${int_t}" -lt 60; then
  81.     if test -n "$moz"; then
  82.         log "waiting for browser to terminate.."
  83.         while mozillaloaded; do
  84.             sleep 3
  85.         done
  86.         log "browser seems to have been closed.."
  87.     fi
  88. fi
  89. log "browser exited"
  90. }
  91.  
  92. # First ensure that we can launch the server
  93. BINPATH=
  94. for i in ${SRCHPATH}; do
  95.     ! test -n "${BINPATH}" && test -x ${i}/htsserver && BINPATH=${i}
  96. done
  97. for i in ${SRCHDISTPATH}; do
  98.     ! test -n "${DISTPATH}" && test -f "${i}/httrack/lang.def" && DISTPATH="${i}/httrack"
  99. done
  100. test -n "${BINPATH}" || ! log "could not find htsserver" || exit 1
  101. test -n "${DISTPATH}" || ! log "could not find httrack directory" || exit 1
  102. test -f ${DISTPATH}/lang.def || ! log "could not find ${DISTPATH}/lang.def" || exit 1
  103. test -f ${DISTPATH}/lang.indexes || ! log "could not find ${DISTPATH}/lang.indexes" || exit 1
  104. test -d ${DISTPATH}/lang || ! log "could not find ${DISTPATH}/lang" || exit 1
  105. test -d ${DISTPATH}/html || ! log "could not find ${DISTPATH}/html" || exit 1
  106.  
  107. # Locale
  108. HTSLANG="${LC_MESSAGES}"
  109. ! test -n "${HTSLANG}" && HTSLANG="${LC_ALL}"
  110. ! test -n "${HTSLANG}" && HTSLANG="${LANG}"
  111. test -n "${HTSLANG}" && HTSLANG="`echo ${HTSLANG} | cut -c1-2` | tr 'A-Z' 'a-z'"
  112. LANGN=`grep "${HTSLANG}:" ${DISTPATH}/lang.indexes | cut -f2 -d':'`
  113. ! test -n "${LANGN}" && LANGN=1
  114.  
  115. # Find the browser
  116. # note: not all systems have sensible-browser or www-browser alternative
  117. # thefeore, we have to find a bit more if sensible-browser could not be found
  118.  
  119. for i in ${SRCHBROWSEREXE}; do
  120. for j in ${SRCHPATH}; do
  121. if test -x ${j}/${i}; then
  122. BROWSEREXE=${j}/${i}
  123. fi
  124. test -n "$BROWSEREXE" && break
  125. done
  126. test -n "$BROWSEREXE" && break
  127. done
  128. test -n "$BROWSEREXE" || ! log "cound not find any suitable browser" || exit 1
  129.  
  130. # "browse" command
  131. if test "$1" = "browse"; then
  132. launch_browser "${BROWSEREXE}" "file://${HOME}/websites/index.html"
  133. exit $?
  134. fi
  135.  
  136. # Create a temporary filename
  137. TMPSRVFILE="/tmp/.webhttrack.$$.`head -c16 /dev/random | md5sum | cut -f1 -d' '`"
  138. >${TMPSRVFILE} || ! log "cound not create the temporary file ${TMPSRVFILE}" || exit 1
  139. # Launch htsserver binary and setup the server
  140. (${BINPATH}/htsserver "${DISTPATH}/" path "${HOME}/websites" lang "${LANGN}" $@; echo SRVURL=error) > ${TMPSRVFILE}&
  141. # Find the generated SRVURL
  142. SRVURL=
  143. MAXCOUNT=60
  144. while ! test -n "$SRVURL"; do
  145. MAXCOUNT=$[$MAXCOUNT - 1]
  146. test $MAXCOUNT -gt 0 || exit 1
  147. test $MAXCOUNT -lt 50 && echo "waiting for server to reply.."
  148. SRVURL=`grep -E URL= ${TMPSRVFILE} | cut -f2- -d=`
  149. test ! "$SRVURL" = "error" || ! log "could not spawn htsserver" || exit 1
  150. test -n "$SRVURL" || sleep 1
  151. done
  152.  
  153. # Cleanup function
  154. function cleanup {
  155. test -n "$1" && log "nasty signal caught, cleaning up.."
  156. test -f ${TMPSRVFILE} && SRVPID=`grep -E PID= ${TMPSRVFILE} | cut -f2- -d=`
  157. test -n "${SRVPID}" && kill -9 ${SRVPID}
  158. test -f ${TMPSRVFILE} && rm ${TMPSRVFILE}
  159. test -n "$1" && log "..done"
  160. return 0
  161. }
  162.  
  163. # Cleanup in case of emergency
  164. trap "cleanup now; exit" 1 2 3 4 5 6 7 8 9 11 13 14 15 16 19 24 25
  165.  
  166. # Got SRVURL, launch browser
  167. launch_browser "${BROWSEREXE}" "${SRVURL}"
  168.  
  169. # That's all, folks!
  170. trap "" 1 2 3 4 5 6 7 8 9 11 13 14 15 16 19 24 25
  171. cleanup
  172. exit 0
  173.